"""
Python 文件操作基础知识点
======================

本文件演示了Python中最基本的文件操作方法，包括写入和读取文件内容。
"""

# 文件写入操作示例
# 使用 'a' 模式（追加模式）打开文件
# 如果文件不存在会创建新文件，如果存在则在文件末尾追加内容
f = open('python.txt', 'a', encoding='utf-8')  # 指定编码格式以支持中文
f.write('hello world\n')  # 写入内容，添加换行符
f.flush()  # 刷新缓冲区，确保内容写入磁盘
f.close()  # 关闭文件，释放资源

# 文件读取操作示例
# 使用 'r' 模式（只读模式）打开文件
f = open('python.txt', 'r', encoding='utf-8')  # 指定相同编码格式
content = f.read()  # 读取文件全部内容
print(content)  # 输出文件内容
f.close()  # 关闭文件

# 使用 with 语句进行文件操作（推荐方式）
# with 语句可以自动关闭文件，即使出现异常也会确保文件被正确关闭
with open('python.txt', 'a', encoding='utf-8') as f:
    f.write('使用with语句写入的内容\n')

# 使用 with 语句读取文件
with open('python.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)

# 不同的文件读取方法
with open('python.txt', 'r', encoding='utf-8') as f:
    # readline() - 一次读取一行
    first_line = f.readline()
    print(f"第一行: {first_line}")
    
    # readlines() - 读取所有行，返回列表
    remaining_lines = f.readlines()
    print(f"剩余行: {remaining_lines}")

# 写入多行内容
lines = ['第一行内容\n', '第二行内容\n', '第三行内容\n']
with open('python.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

"""
知识点总结：

1. open() 函数
   - 用于打开文件，返回一个文件对象
   - 基本语法：open(filename, mode, encoding)
   - 常用模式：
     'r'  - 只读模式（默认）
     'w'  - 写入模式，覆盖原内容
     'a'  - 追加模式，在末尾添加内容
     'x'  - 创建模式，文件存在则失败
     'b'  - 二进制模式，与其他模式组合使用，如 'rb', 'wb'
     't'  - 文本模式（默认），可与其他模式组合使用，如 'rt', 'wt'

2. 文件操作步骤
   - 打开文件：open()
   - 读写文件：read(), write(), readline(), readlines(), writelines()
   - 关闭文件：close()

3. 文件读取方法详解
   - read()      - 读取整个文件内容
   - readline()  - 读取单行内容
   - readlines() - 读取所有行，返回每行组成的列表
   - write()     - 写入字符串
   - writelines()- 写入字符串序列（列表或元组）

4. 重要注意事项
   - 必须关闭文件以释放系统资源
   - 处理文本文件时应指定 encoding 参数
   - 写入内容后使用 flush() 确保数据写入磁盘
   - 更推荐使用 with 语句自动管理文件（上下文管理器）
   - 二进制文件操作时使用 'b' 模式，不需要指定 encoding

5. with 语句的优势
   - 自动关闭文件，即使发生异常也能保证文件被正确关闭
   - 使代码更加简洁清晰
   - 是Python中推荐的文件操作方式

6. 换行符处理
   - 在字符串末尾添加 \n 实现换行
   - Windows系统中实际存储为 \r\n，但Python会自动处理转换
   - 不同操作系统换行符可能不同：Windows(\r\n)、Unix/Linux(\n)、Mac(\r)

7. 异常处理
   - 文件操作应该使用 try-except 来处理可能的异常，如 FileNotFoundError 等
"""